package org.microframework.cloud.logs.service;

import org.microframework.base.core.web.page.PageQuery;
import org.microframework.cloud.logs.model.domain.SystemLog;

import com.jfinal.plugin.activerecord.Page;

/**
 * 系统日志服务接口
 * 
 * @author microclouds
 * @version 1.0.0
 * @date 2024-05-21
 */
public interface ISystemLogService {

    /**
     * 记录系统日志
     * 
     * @param systemLog 系统日志信息
     * @return 是否成功
     */
    boolean insertSystemLog(SystemLog systemLog);

    /**
     * 记录信息日志
     * 
     * @param serviceName 服务名称
     * @param content 日志内容
     * @return 是否成功
     */
    boolean info(String serviceName, String content);

    /**
     * 记录警告日志
     * 
     * @param serviceName 服务名称
     * @param content 日志内容
     * @return 是否成功
     */
    boolean warn(String serviceName, String content);

    /**
     * 记录错误日志
     * 
     * @param serviceName 服务名称
     * @param content 日志内容
     * @param exception 异常信息
     * @return 是否成功
     */
    boolean error(String serviceName, String content, Throwable exception);

    /**
     * 记录严重错误日志
     * 
     * @param serviceName 服务名称
     * @param content 日志内容
     * @param exception 异常信息
     * @return 是否成功
     */
    boolean fatal(String serviceName, String content, Throwable exception);

    /**
     * 查询系统日志列表
     * 
     * @param systemLog 查询条件
     * @param pageRequest 分页参数
     * @return 分页结果
     */
    Page<SystemLog> selectSystemLogList(SystemLog systemLog, PageQuery<SystemLog> pageRequest);

    /**
     * 批量删除系统日志
     * 
     * @param ids 需要删除的系统日志ID数组
     * @return 删除数量
     */
    int deleteSystemLogByIds(String[] ids);

    /**
     * 查询系统日志详细
     * 
     * @param id 系统日志ID
     * @return 系统日志对象
     */
    SystemLog selectSystemLogById(String id);

    /**
     * 清空系统日志
     * 
     * @return 是否成功
     */
    boolean cleanSystemLog();
} 